package com.qiangesoft.blog.core.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qiangesoft.blog.common.mvc.PageQuery;
import com.qiangesoft.blog.common.mvc.PageResultVO;
import com.qiangesoft.blog.common.result.ResponseResult;
import com.qiangesoft.blog.core.entity.BlogCategory;
import com.qiangesoft.blog.core.pojo.vo.BlogCategoryArticleVO;
import com.qiangesoft.blog.core.pojo.vo.BlogCategorySimpleVO;
import com.qiangesoft.blog.core.pojo.vo.BlogCategoryTreeVO;

import java.util.List;

/**
 * <p>
 * 博客分类 服务类
 * </p>
 *
 * @author qiange
 * @since 2023-06-05
 */
public interface IBlogCategoryService extends IService<BlogCategory> {

    /**
     * 分类列表
     *
     * @param name 分类名
     * @return
     */
    PageResultVO<BlogCategory> listCategory(PageQuery pageQuery, String name);

    /**
     * 分类详情
     *
     * @param id 分类id
     * @return
     */
    ResponseResult getCategoryById(Long id);

    /**
     * 添加分类
     *
     * @param category 分类对象
     * @return
     */
    ResponseResult insertCategory(BlogCategory category);

    /**
     * 修改分类
     *
     * @param category 分类对象
     * @return
     */
    ResponseResult updateCategory(BlogCategory category);

    /**
     * 删除分类
     *
     * @param id 分类id
     * @return
     */
    ResponseResult deleteCategory(Long id);

    /**
     * 批量删除分类
     *
     * @param list 分类对象集合
     * @return
     */
    ResponseResult deleteBatch(List<BlogCategory> list);


    /**
     * 置顶分类
     *
     * @return 置顶分类
     */
    ResponseResult top(Long id);


    //-----------web端方法开始------------------

    /**
     * 首页分类列表
     *
     * @return
     */
    List<BlogCategorySimpleVO> listAll();

    List<BlogCategoryTreeVO> listTree();
}
